package com.itce.arco.test2;

public class test1 {
    /*给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ，返回 true ；如果数组中每个元素互不相同，返回 false 。*/
    public static void main(String[] args) {
/*        int[] nums = new int[]{1,2,3,1};
        boolean b = containsDuplication(nums);
        System.out.println(b);*/
        int[] nums = new int[]{5,4,-1,7,8};
        int max = maxSubArray(nums);
        System.out.println(max);
    }
    public static boolean containsDuplication(int[] nums) {
        int[] arr = new int[nums.length];
        int index;
        for (int i = 0; i < nums.length-1; i++) {
            index = nums[i]%nums.length;
            if(index<0) index+=nums.length;
            arr[index] ++;
            if (arr[index]>1) {
                for (int j = 0; j < i; j++) {
                    if (nums[i] == nums[j]){
                        return true;
                    }
                }
            }
        }
        return false;
    }
/*    给你一个整数数组 nums ，请你找出一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。

    子数组 是数组中的一个连续部分。*/
    /*-2,1,-3,4,-1,2,1,-5,4*/
    public static int maxSubArray(int[] nums) {
        int max = nums[0];
        int[] maxArray = new int[nums.length];
        maxArray[0] = nums[0];
        for (int i = 1; i < nums.length; i++) {
            maxArray[i] = nums[i];
            if (maxArray[i-1]>0) {
                maxArray[i]+=maxArray[i-1];
            }
            max = Math.max(max, maxArray[i]);
        }
        return max;
    }
}
